﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;

namespace SoftHotel.Models
{
    public class DetallePrecio : IValidatableObject
    {
        [Key]
        public int? idDetallePrecio { get; set; }

        [Required(ErrorMessage = "El campo Sede es requerido.")]
        public int idSede { get; set; }
        public int? idServicio { get; set; }

        [Required(ErrorMessage = "El campo Unidad de medida es requerido.")]
        public int unidadMedida { get; set; }
        public int? tipoAmbiente { get; set; }

        [Required(ErrorMessage = "El campo Moneda es requerido.")]
        public int moneda { get; set; }

        [DisplayName("Fecha de activación")]
        public DateTime? fechaActivacion { get; set; }

        [DisplayName("Fecha de desactivación")]
        public DateTime? fechaDesactivacion { get; set; }

        [DisplayName("Precio")]
        [Required(ErrorMessage = "El campo Precio es requerido.")]
        [DataType("decimal", ErrorMessage = "El campo Precio debe ser un número")]
        public decimal precio { get; set; }

        [DisplayName("Sede")]
        public Sede sede { get; set; }

        [DisplayName("Servicio")]
        public Servicio servicio { get; set; }

        [ForeignKey("unidadMedida")]
        [DisplayName("Unidad de medida")]
        public Parametro pUnidadMedida { get; set; }

        [ForeignKey("tipoAmbiente")]
        [DisplayName("Tipo de ambiente")]
        public Parametro pTipoAmbiente { get; set; }

        [ForeignKey("moneda")]
        [DisplayName("Moneda")]
        public Parametro pMoneda { get; set; }

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            if (idServicio == null && tipoAmbiente == null)
                yield return new ValidationResult("Se debe asociar un elemento.", new string[] { "idServicio", "tipoAmbiente" });
        }
    }
}